package com.zhq.涉及到的知识点总结;


import com.zhq.service.User;

import java.beans.Introspector;

/**
 * 1、自定义注解使用@interface 其中会使用到其他的注解如下：
 * @Target决定此注解用在什么上面，一般有类、方法、属性等。放在ELEMENTTYPE枚举类中
 * @Retention决定此注解的生命周期，一般都是使用RUNTIME
 * 注解里面定义的是注解类型元素，修饰符为public。不写则默认为public
 * 用方法的方式来表示，可以指定默认值。
 * 获取到此字段值的方式为：
 * class.getAnnotion(Class<?> classType).规定的字段名称
 *
 * 判断一个类是否标注了此注解，可以使用class.isAnnotionPresent(Class<?> classType)
 * 标注了返回true，否则返回false
 *
 * 反射中使用class.getSimpleName()获取类的简写名称，就是直接的类名
 * 然后Spring中使用Introspector.decapitalize()方法去处理此名称。如果第一个字符和第二个字符都为大写，直接返回此名称
 * 否则将首字母小写返回
 * cha
 *
 */

@TestAnnotion()
public class 总结 {
    public static void main(String[] args) {
        TestAnnotion annotation = 总结.class.getAnnotation(TestAnnotion.class);
        boolean present = 总结.class.isAnnotationPresent(TestAnnotion.class);
        String simpleName = 总结.class.getSimpleName();
        String simpleName1 = User.class.getSimpleName();
        String decapitalize = Introspector.decapitalize(simpleName1);
        System.out.println(decapitalize);
        System.out.println(simpleName1);
        System.out.println(simpleName);
        if (present){
            System.out.println("已标注此注解");
        }
        if (annotation!=null){
            String name = annotation.name();
            System.out.println(name);
        }


        String decapitalize1 = Introspector.decapitalize(TEST.class.getSimpleName());
        System.out.println(decapitalize1);
    }

}
